import javax.swing.*;
import java.util.Arrays;
import java.util.List;

public class NGuessNumber {
    static int[] arrays = null;
    public static void main(String[] args) {
        arrays = createArrays();
        JFrame jFrame = new JFrame("新版猜数字");
        jFrame.setBounds(600, 300,300 , 300);
        JPanel jPanel = new JPanel();

        Box verticalBox = Box.createVerticalBox();
        Box horizontalBox = Box.createHorizontalBox();
        Box verticalBoxBig = Box.createVerticalBox();

        JLabel jLabel = new JLabel("请输入4个数");

        JTextField jTextField_1  = new JTextField();
        jTextField_1.setSize(40,10);

        JTextField jTextField_2  = new JTextField();
        jTextField_1.setSize(40,10);

        JTextField jTextField_3  = new JTextField();
        jTextField_1.setSize(40,10);

        JTextField jTextField_4  = new JTextField();
        jTextField_1.setSize(40,10);


        verticalBox.add(jLabel);
        verticalBox.add(jTextField_1);
        verticalBox.add(jTextField_2);
        verticalBox.add(jTextField_3);
        verticalBox.add(jTextField_4);

        JButton jButton_1 = new JButton("验证");
        jButton_1.addActionListener(e->{
            int AIndex = 0;
            int BIndex = 0;
            String text_1 = jTextField_1.getText();
            String text_2 = jTextField_2.getText();
            String text_3 = jTextField_3.getText();
            String text_4 = jTextField_4.getText();
            try{
                AIndex = arraysA(arrays
                        ,Integer.parseInt(text_1)
                        ,Integer.parseInt(text_2)
                        ,Integer.parseInt(text_3)
                        ,Integer.parseInt(text_4)
                );
                BIndex = arraysB(arrays ,Integer.parseInt(text_1)
                        ,Integer.parseInt(text_2)
                        ,Integer.parseInt(text_3)
                        ,Integer.parseInt(text_4));
                JDialog jDialog = new JDialog();
                jDialog.setBounds(700, 400,300 , 100);
                if(AIndex==4&&BIndex==4){
                    JLabel jLabel1 = new JLabel(AIndex+"A"+" "+BIndex+"B"+" 恭喜答对 刷新数据");
                    jDialog.add(jLabel1);
                    arrays = createArrays();
                }else {
                    JLabel jLabel1 = new JLabel(AIndex+"A"+" "+BIndex+"B");
                    jDialog.add(jLabel1);
                }



                jDialog.setVisible(true);

            }catch (Exception a){
                a.printStackTrace();
                JDialog jDialog = new JDialog();
                jDialog.setBounds(700, 400,300 , 100);
                JLabel jLabel1 = new JLabel("请输入正规值");

                jDialog.add(jLabel1);
                jDialog.setVisible(true);
            }

        });
        JButton jButton_2 = new JButton("结束");
        jButton_2.addActionListener(e -> {
            System.exit(0);
        });
        horizontalBox.add(jButton_1);
        horizontalBox.add(jButton_2);

        verticalBoxBig.add(verticalBox);
        verticalBoxBig.add(horizontalBox);

        jPanel.add(verticalBoxBig);

        jFrame.add(jPanel);
        jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jFrame.setVisible(true);
    }
    public static int[] createArrays(){
        int a[]=new int[4];

        for(int i=0;i<4;i++){

            a[i]=(int)(Math.random()*9)+1;

            for(int j=0;j<i;j++){

                if(a[i]==a[j]){

                    a[i]=0;

                    i=i-1;

                    break;

                }

            }

        }
        return a;
    }
    public static int arraysA(int[] arrays,int a1,int a2,int a3 ,int a4){
        int aNumber = 0;
        if(arrays[0]==a1){
            aNumber++;
        }
        if(arrays[1]==a2){
            aNumber++;
        }
        if(arrays[2]==a3){
            aNumber++;
        }
        if(arrays[3]==a4){
            aNumber++;
        }

        return aNumber;
    }
    public static int arraysB(int[] arrays,int a1,int a2,int a3 ,int a4){
        List<Integer> a11 = List.of(a1, a2, a3, a4);
        int  count =(int) Arrays.stream(arrays).filter(a11::contains).count();
        return count;
    }
}
